perm filename MOTION.SAI[PNT,HE] blob sn#238948 filedate 1976-10-27 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	REQUIRE "ALAID.REL[HAL,HE]" LOAD_MODULE
C00006 ENDMK
C⊗;
REQUIRE "ALAID.REL[HAL,HE]" LOAD_MODULE;
EXTERNAL RECURSIVE STRING PROCEDURE TREATREQUEST(STRING STR; INTEGER SOURCE(1));

string procedure default_file(string file, def_ext);
    begin integer name, ext, ppn; string strfile, strppn;
    name←cvfil(file, ext, ppn);
    if name=0 then return(null);
    if ext=0 then ext←cvsix(def_ext);
    if ppn=0
	then strppn←null
	else
	    begin
	    strppn←cvsix(ppn);
	    strppn  ←  "["  &  strppn[1 for 3]  &  ","  &  strppn[4 for 3]  &  "]";
	    end;
    return(strfile←cv6str(name) & "." & cv6str(ext) & strppn);
    end;

procedure init_symbols;
    begin string sym_file;
    boolean procedure treatrequest_lost(string arg);
	return(equ(treatrequest(arg, 1), "CANT"));

    sym_file ← "SLAVE.ALS[PNT,PJ]";
    while treatrequest_lost("SYMBOLS " &  sym_file) do
	begin
	outstr(sym_file&" not found try:  "); sym_file ← inchwl;
	sym_file ← default_file(sym_file, "ALS");
	end;
    print("Reading ", sym_file, crlf);
    end;
require init_symbols initialization;

procedure read_blue(real array a);
    begin string str; integer brc, i, j;
    comment treatrequest("WAIT (NAME ELFREADY)");
    str ← treatrequest("GETVAL (NAME BARM)");  brc ← 0;
    for i ← 1 step 1 until 4 do "row by row"
	begin "read trans"
	for j ← 1 step 1 until 4 do
	    begin if brc<0 then done "read trans"; a[i, j] ← realscan(str, brc) end;
	end "read trans";
    if ¬(i=j=4) then print("read_blue lost");
    end;

procedure goblue(real array bxf);
    begin

    string procedure cvbxfs;
	begin string str; integer i, j, width, digits;
	str ← "TRANS"; getformat(width, digits); setformat(10, 4);
	for i ← 1 step 1 until 4 do "row by row"
	    for j ← 1 step 1 until 4 do str ← str & cvf(bxf[i,j]);
	setformat(width, digits);
	return(str);
	end;

    treatrequest("WAIT (NAME ELFREADY)");
    treatrequest("GETVAL (NAME ELFREADY)");
    treatrequest("SETVAL (NAME DEST) (" &  cvbxfs & ")");
    treatrequest("SIGNAL (NAME TENREADY)");
    end;